package net.qhzw.vip.qiyu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import net.qhzw.vip.qiyu.entity.DtsUser;
import net.qhzw.vip.qiyu.model.*;
import net.qhzw.vip.qiyu.result.PageResult;
import net.qhzw.vip.qiyu.util.PageAdapter;

import java.util.List;

public interface DtsUserService extends IService<DtsUser> {

    /***
     * 分页查询用户
     * @param page
     * @param dtsUser
     * @return
     */
    Page<DtsUser> findByPage(Page<DtsUser> page, DtsUser dtsUser);

    /***
     * 站点管理员登录
     * @param username
     * @param password
     * @return
     */
    LoginUser login(String username, String password);

    /***
     * 用户认证
     * @param userId
     * @param userAuthForm
     * @return
     */
    boolean identifyVerify(Long userId, UserAuthForm userAuthForm);

    /***
     * 添加用户
     * @param dtsUser
     * @return
     */
    boolean addDtsUser(DtsUser dtsUser);

    /***
     * 修改用户
     * @param dtsUser
     * @return
     */
    boolean updateDtsUser(DtsUser dtsUser);


    /***
     * 审核实名认证
     * @param verifiedForm
     * @return
     */
    boolean verified(VerifiedForm verifiedForm);


    /***
     * 根据社区id查询社区名称
     * @param communityId
     * @return
     */
    String getCommunityNameById(Long communityId);


    /***
     * 根据关键词查询用户
     * @param keywords
     * @return
     */
    List<DtsUser> findListByKeywords(String keywords);


    /***
     * 修改用户信息
     * @param param
     * @return
     */
    boolean modifyUsrInfo(ModifyUsrInfoParam param);


    /***
     * 查询结余欠款
     * @return
     */
    String balanceArrears(Long shopId);

    /**
     * 根据站点ID查询管理员手机号
     *
     * @return
     */
    List<String> getMobileByCommunityId(Long communityId);

    /***
     *
     * @param username
     * @return
     */
    DtsUser getUserByUsername(String username);

    /**
     * 获取站点维修人员
     *
     * @return
     */
    List<DtsUser> getDtsUser(Long communityId);

    /**
     * 用户余额清零
     *
     * @param userId
     */
    void clearTheBal(Long userId);

    /**
     * 分页查询实名认证用户
     * @param pageAdapter
     * @param realName
     * @param idCard
     * @param mobile
     * @param authStatus
     * @return
     */
    PageResult<DtsUser> findAauthPage(PageAdapter pageAdapter, String realName, String idCard, String mobile, Byte authStatus, Long shopId);


    /**
     * 租车用户信息查询
     * @param page
     * @param shopId
     * @param realName
     * @param mobile
     * @param idCard
     * @return
     */
    PageResult<DtsUser> findCarRental(Page<DtsUser> page, Long shopId, String realName, String mobile, String idCard);


    /**
     * 商城用户
     * @param page
     * @param name
     * @return
     */
    PageResult<DtsUser> findMall(Page<DtsUser> page, String name, Byte isVip);

    int getUserStatus(Long userId);
}
